package top.linyuxb.lycloud.rpc.starter.annotation;

import top.linyuxb.lycloud.common.constant.LyRpcRobinType;

import java.lang.annotation.*;

/**
 * Created by Intellij IDEA.
 *
 * @Author: linyuxb
 * @Date: 2024/6/7 11:29
 * @Desc: 负载均衡器注解 作用于实例方法上，负责rpc接口方法逻辑
 */
@Inherited
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface LyRpcRibbon {
    /**
     * 负载均衡策略
     * @return
     */
    LyRpcRobinType ribbonType() default LyRpcRobinType.ROUND_ROBIN;

    /**
     * 客户端超时 毫秒 优先级最大
     *
     * @return
     */
    int timeOut() default -1;

    /**
     * 重试次数 默认重试服务端个数次
     * @return
     */
    int retry() default -1;

    /**
     * 回调方法：配置在当前调用类下方法名称，方法参数与rpc接口方法参数相同
     * 配置后，当超时、异常后，达到重试次数做为兜底响应结果
     * @return
     */
    String fallbackMethod() default "";
}
